// 统一侧边栏管理器
class SidebarManager {
    constructor() {
        this.currentPage = this.getCurrentPage();
        this.isMobileMenuOpen = false;
        this.init();
    }

    // 初始化侧边栏
    init() {
        this.createSidebar();
        this.setupEventListeners();
        this.setActiveNavItem();
        this.setupResponsiveMenu();
    }

    // 获取当前页面名称
    getCurrentPage() {
        const path = window.location.pathname;
        const pageMap = {
            'dashboard.html': 'dashboard',
            'reports.html': 'reports',
            'blog.html': 'blog',
            'products.html': 'products',

            'logs.html': 'logs',
            'messages.html': 'messages',
            'system-settings.html': 'system-settings',
            'profile.html': 'profile',
            'category-manager.html': 'category-manager',
            'edit-product.html': 'edit-product'
        };

        const fileName = path.split('/').pop();
        return pageMap[fileName] || 'dashboard';
    }

    // 创建侧边栏
    createSidebar() {
        // 检查是否已存在侧边栏
        if (document.querySelector('.sidebar')) {
            return;
        }

        // 创建侧边栏HTML
        const sidebarHTML = `
            <nav class="sidebar">
                <div class="sidebar-header">
                    <h2>后台管理</h2>
                </div>
                <ul>
                    <li><a href="dashboard.html" data-page="dashboard">仪表盘</a></li>
                    <li><a href="reports.html" data-page="reports">访客统计</a></li>
                    <li><a href="blog.html" data-page="blog">博客管理</a></li>
                    <li><a href="products.html" data-page="products">产品管理</a></li>

                    <li><a href="logs.html" data-page="logs">网站日志</a></li>
                    <li><a href="messages.html" data-page="messages">留言订阅</a></li>
                    <li><a href="system-settings.html" data-page="system-settings">系统设置</a></li>
                </ul>
            </nav>
        `;

        // 查找容器元素
        const container = document.querySelector('.container');
        if (container) {
            // 在容器开头插入侧边栏
            container.insertAdjacentHTML('afterbegin', sidebarHTML);
        } else {
            // 如果没有容器，直接在body开头插入侧边栏
            document.body.insertAdjacentHTML('afterbegin', sidebarHTML);
            
            // 查找所有主要内容元素并添加content类
            const mainElements = document.querySelectorAll('main, .content, .main-content');
            mainElements.forEach(el => {
                if (!el.classList.contains('sidebar')) {
                    el.classList.add('content');
                }
            });
        }

        // 添加移动端菜单按钮和遮罩层
        this.addMobileElements();
    }

    // 添加移动端元素
    addMobileElements() {
        // 检查是否已存在移动端菜单按钮
        if (!document.querySelector('.mobile-menu-btn')) {
            const mobileMenuBtn = document.createElement('button');
            mobileMenuBtn.className = 'mobile-menu-btn';
            mobileMenuBtn.innerHTML = '☰';
            mobileMenuBtn.setAttribute('aria-label', '切换菜单');
            mobileMenuBtn.onclick = () => this.toggleMobileMenu();
            document.body.insertBefore(mobileMenuBtn, document.body.firstChild);
        }

        // 检查是否已存在遮罩层
        if (!document.querySelector('.mobile-overlay')) {
            const overlay = document.createElement('div');
            overlay.className = 'mobile-overlay';
            overlay.onclick = () => this.toggleMobileMenu();
            document.body.appendChild(overlay);
        }
    }

    // 设置事件监听器
    setupEventListeners() {
        // 窗口大小变化
        window.addEventListener('resize', () => this.handleResize());
        
        // 点击外部关闭移动菜单
        document.addEventListener('click', (e) => this.handleOutsideClick(e));
    }

    // 设置激活的导航项
    setActiveNavItem() {
        // 移除所有激活状态
        document.querySelectorAll('.sidebar a').forEach(link => {
            link.classList.remove('active');
        });
        
        // 设置当前页面的激活状态
        const currentPage = this.getCurrentPage();
        const activeLink = document.querySelector(`.sidebar a[data-page="${currentPage}"]`);
        if (activeLink) {
            activeLink.classList.add('active');
        }
    }

    // 设置响应式菜单
    setupResponsiveMenu() {
        this.handleResize();
    }

    // 处理窗口大小变化
    handleResize() {
        const sidebar = document.querySelector('.sidebar');
        const overlay = document.querySelector('.mobile-overlay');
        
        if (window.innerWidth > 768) {
            // 桌面端：关闭移动菜单
            if (sidebar) {
                sidebar.classList.remove('mobile-open');
            }
            if (overlay) {
                overlay.classList.remove('active');
            }
            this.isMobileMenuOpen = false;
        }
    }

    // 处理外部点击
    handleOutsideClick(event) {
        const sidebar = document.querySelector('.sidebar');
        const menuBtn = document.querySelector('.mobile-menu-btn');
        
        if (window.innerWidth <= 768 && 
            this.isMobileMenuOpen && 
            !sidebar.contains(event.target) && 
            !menuBtn.contains(event.target)) {
            this.toggleMobileMenu();
        }
    }

    // 切换移动菜单
    toggleMobileMenu() {
        const sidebar = document.querySelector('.sidebar');
        const overlay = document.querySelector('.mobile-overlay');
        const menuBtn = document.querySelector('.mobile-menu-btn');
        
        if (sidebar && overlay) {
            this.isMobileMenuOpen = !this.isMobileMenuOpen;
            
            if (this.isMobileMenuOpen) {
                sidebar.classList.add('mobile-open');
                overlay.classList.add('active');
                if (menuBtn) {
                    menuBtn.innerHTML = '✕';
                }
                // 防止背景滚动
                document.body.style.overflow = 'hidden';
            } else {
                sidebar.classList.remove('mobile-open');
                overlay.classList.remove('active');
                if (menuBtn) {
                    menuBtn.innerHTML = '☰';
                }
                // 恢复背景滚动
                document.body.style.overflow = '';
            }
        }
    }

    // 关闭移动菜单
    closeMobileMenu() {
        if (this.isMobileMenuOpen) {
            this.toggleMobileMenu();
        }
    }

    // 更新侧边栏
    update() {
        this.setActiveNavItem();
    }
}

// 创建全局侧边栏管理器实例
let sidebarManager;

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
    // 检查当前页面是否需要侧边栏
    const currentPage = window.location.pathname.split('/').pop();
    const pagesWithoutSidebar = ['login.html', 'index.html', 'editor.html'];
    
    if (!pagesWithoutSidebar.includes(currentPage)) {
        sidebarManager = new SidebarManager();
    }
});

// 导出到全局作用域
window.sidebarManager = sidebarManager;